#include<stdio.h>
int myCompare(char *p)
{
    if(strlen(p)>1)
    {
        return -1;
    }
    int res=-1;
    for(int i=0;i<4;i++)
    {
        if(*p==set[i])
        {
            res=i;
            return res;
        }
    }
    return res;
}

int result(int x1,int x2,char k)
{
    if(k=='+')
    {
        return x2+x1;
    }
    else if(k=='-')
    {
        return x2-x1;
    }
    else if(k=='*')
    {
        return x2*x1;
    }
    else if(k=='/'&&x1!=0)
    {
        
        return x2/x1;
    }
    else return -1;
}
int evalRPN(char ** tokens, int tokensSize){
    int* stack=malloc(sizeof(int)*tokensSize);
    int top=0;
    for(int i=0;i<tokensSize;i++)
    {
        char* x=tokens[i];
        if(myCompare(x)==-1) //如果不是符号，就将数字入栈
        {
            int num=atoi(tokens[i]);
            stack[top++]=num;
        }
        else //如果是符号，就从栈取出两个数
        {
            int x1,x2,y;
            x1=stack[--top];
            x2=stack[--top];
            char k=set[myCompare(x)];
            y=result(x1, x2, k); //将结果入栈
            stack[top++]=y;
        }
    }
    int ret=stack[--top];
    return ret;
}